题目地址 (opens new window)

  • 🙂 第一次练习 2020年5月7日 是一个简单题,但是做起来还是需要思考一下
  • 😄 第二次练习 2020年5月8日 大概思路还是记得了,还是多加练习,五毒还是很有效的。

# DFS

解题代码

public boolean isSubtree(TreeNode s, TreeNode t) {
    if  (s == null) {
        return false;
    }

    if (isSame(s, t)) {
        return true;
    }

    return isSubtree(s.left, t) || isSubtree(s.right, t);
}

public boolean isSame(TreeNode p, TreeNode q) {
    if (p == null && q == null) {
        return true;
    }
    if (p == null || q == null) {
        return false;
    }

    if (p.val != q.val) {
        return false;
    }

    return isSame(p.left, q.left) && isSame(p.right, q.right);
}

这种写法我虽然不赞同,但是确实要简洁很多

public boolean isSubtree(TreeNode s, TreeNode t) {

    if (s == null) return false;
    if (isSame(s, t)) return true;
    return isSubtree(s.left, t) || isSubtree(s.right, t);
}

private boolean isSame(TreeNode p, TreeNode q) {

    if (p == null && q == null) return true;
    if (p == null || q == null) return false;
    if (p.val != q.val) return false;
    return isSame(p.left, q.left) && isSame(p.right, q.right);
}

# 易错点

  • 易错项 1
最后编辑时间: 7/14/2020, 9:21:47 AM